home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / wgdb-42.lha / wgdb-4.2 / gdb / xm-mips.h < prev    next >
Text File  |  1992-09-11  |  2KB  |  58 lines

  1. /* Definitions to make GDB run on a mips box under 4.3bsd.
  2.    Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
  3.    Contributed by Per Bothner(bothner@cs.wisc.edu) at U.Wisconsin
  4.    and by Alessandro Forin(af@cs.cmu.edu) at CMU
  5.  
  6. This file is part of GDB.
  7.  
  8. This program is free software; you can redistribute it and/or modify
  9. it under the terms of the GNU General Public License as published by
  10. the Free Software Foundation; either version 2 of the License, or
  11. (at your option) any later version.
  12.  
  13. This program is distributed in the hope that it will be useful,
  14. but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. GNU General Public License for more details.
  17.  
  18. You should have received a copy of the GNU General Public License
  19. along with this program; if not, write to the Free Software
  20. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  21.  
  22. #if !defined (HOST_BYTE_ORDER)
  23. #define HOST_BYTE_ORDER LITTLE_ENDIAN
  24. #endif
  25.  
  26. /* Get rid of any system-imposed stack limit if possible */
  27.  
  28. #define    SET_STACK_LIMIT_HUGE
  29.  
  30. /* This WOULD BE the amount to subtract from u.u_ar0
  31.    to get the offset in the core file of the register values.
  32.    But Mips' ptrace works on regnums, not displacements.  So since
  33.    REGISTER_U_ADDR is called for both core files and ptrace, use
  34.    BLOCKEND as a flag:  0 for core files, 1 for ptrace.  What a
  35.    kludge.  */
  36.  
  37. #define KERNEL_U_ADDR (int)reg_ptr    /* Magic, causes a zero blockend */
  38.  
  39. #define REGISTER_U_ADDR(addr, blockend, regno)         \
  40.    if (blockend == 0) {                    \
  41.     if (regno < 38) addr = (NBPG*UPAGES) + (regno - 38)*sizeof(int);\
  42.     else addr = 0; /* ..somewhere in the pcb */    \
  43.    } else if (regno < 32) addr = regno;            \
  44.    else if (regno == PC_REGNUM) addr = 96;        \
  45.    else if (regno == 36) addr = 97;            \
  46.    else if (regno == HI_REGNUM) addr = 98;        \
  47.    else if (regno == LO_REGNUM) addr = 99;        \
  48.    else if (regno == FCRCS_REGNUM) addr = 100;        \
  49.    else if (regno == FCRIR_REGNUM) addr = 101;        \
  50.    else if (regno >= FP0_REGNUM) addr = regno - (FP0_REGNUM-32);\
  51.    else addr = 0;
  52.  
  53. /* Override copies of {fetch,store}_inferior_registers in infptrace.c.  */
  54. #define FETCH_INFERIOR_REGISTERS
  55.  
  56. /* Kernel is a bit tenacious about sharing text segments, disallowing bpts.  */
  57. #define    ONE_PROCESS_WRITETEXT
  58.